{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-04-17T13:03:29.033679Z",
     "start_time": "2025-04-17T13:03:28.847592Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 生成示例数据（具有明显线性相关性）\n",
    "np.random.seed(42)\n",
    "mean = [5, 5]\n",
    "cov = [[3, 2.8], [2.8, 3]]  # 调整协方差矩阵增强相关性\n",
    "X = np.random.multivariate_normal(mean, cov, 100)\n",
    "\n",
    "# 步骤1：数据标准化（中心化）\n",
    "X_centered = X - X.mean(axis=0)\n",
    "print(\"步骤1：数据标准化后均值：\", X_centered.mean(axis=0))\n",
    "\n",
    "# 步骤2：SVD分解\n",
    "U, s, Vt = np.linalg.svd(X_centered, full_matrices=False)\n",
    "print(\"\\n步骤2：奇异值s:\", s)\n",
    "print(\"Vt矩阵:\\n\", Vt)\n",
    "\n",
    "# 步骤3：主成分选择\n",
    "variance_ratio = (s ** 2) / np.sum(s ** 2)\n",
    "cum_var = np.cumsum(variance_ratio)\n",
    "k = np.argmax(cum_var >= 0.95) + 1  # 确定k值\n",
    "print(\"\\n步骤3：各主成分方差贡献率:\", variance_ratio)\n",
    "print(\"累计方差贡献率:\", cum_var)\n",
    "print(\"选择的主成分个数k:\", k)\n",
    "\n",
    "# 步骤4：投影降维\n",
    "X_reduced = X_centered @ Vt[:k, :].T\n",
    "print(\"\\n步骤4：降维后的数据形状:\", X_reduced.shape)\n",
    "print(\"前5个样本的降维结果:\\n\", X_reduced[:5])\n",
    "\n",
    "# 可视化\n",
    "plt.figure(figsize=(12, 5))\n",
    "\n",
    "# 原始数据及主成分方向\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.scatter(X_centered[:, 0], X_centered[:, 1], alpha=0.6)\n",
    "for i, (comp, var) in enumerate(zip(Vt, variance_ratio)):\n",
    "    plt.arrow(0, 0, comp[0]*3*s[i], comp[1]*3*s[i], \n",
    "              width=0.05, color='r', head_width=0.3,\n",
    "              label=f'PC{i+1} ({var*100:.1f}%)')\n",
    "plt.title(\"原始数据及主成分方向\")\n",
    "plt.xlabel(\"Feature 1\")\n",
    "plt.ylabel(\"Feature 2\")\n",
    "plt.legend()\n",
    "plt.axis('equal')\n",
    "\n",
    "# 降维结果可视化\n",
    "plt.subplot(1, 2, 2)\n",
    "if k == 1:\n",
    "    plt.scatter(X_reduced[:, 0], np.zeros_like(X_reduced), alpha=0.6)\n",
    "    plt.title(f\"投影到PC1 ({variance_ratio[0]*100:.1f}%方差)\")\n",
    "    plt.xlabel(\"Principal Component 1\")\n",
    "else:\n",
    "    plt.scatter(X_reduced[:, 0], X_reduced[:, 1], alpha=0.6)\n",
    "    plt.title(\"二维投影结果\")\n",
    "    plt.xlabel(\"PC1\")\n",
    "    plt.ylabel(\"PC2\")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "步骤1：数据标准化后均值： [2.66453526e-16 1.39888101e-15]\n",
      "\n",
      "步骤2：奇异值s: [20.5199078   4.44220347]\n",
      "Vt矩阵:\n",
      " [[ 0.71228158  0.70189384]\n",
      " [ 0.70189384 -0.71228158]]\n",
      "\n",
      "步骤3：各主成分方差贡献率: [0.95523326 0.04476674]\n",
      "累计方差贡献率: [0.95523326 1.        ]\n",
      "选择的主成分个数k: 1\n",
      "\n",
      "步骤4：降维后的数据形状: (100, 1)\n",
      "前5个样本的降维结果:\n",
      " [[-1.47395595]\n",
      " [-1.84299778]\n",
      " [ 0.28647359]\n",
      " [-4.08386275]\n",
      " [ 0.85063498]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACvUklEQVR4nOzdd3gU5d7G8e+W9EYKNSCEIgiKSBNBQLCgImBXPPoiiOKxoIKo2LGAIqLisaFIUSwUFVRsKKIiilQNAaSE3gIJ2dTNlnn/mGRJIAkJJNkE7s915eKZ3ZnZ38zOLpM7zzxjMQzDQEREREREREREpApZ/V2AiIiIiIiIiIicehRKiYiIiIiIiIhIlVMoJSIiIiIiIiIiVU6hlIiIiIiIiIiIVDmFUiIiIiIiIiIiUuUUSomIiIiIiIiISJVTKCUiIiIiIiIiIlVOoZSIiIiIiIiIiFQ5hVIiUuF27tyJ1+s97uW3bdtWgdX431dffcU777yD0+k87nV89NFHrF69uuKKOg779+9nxowZeDwev9YhIiIiIiInB4VSIicZh8OBYRgAHDx4kO+++44xY8Zw4YUXEhUVxd13313q8m+//Tb79+8v8lh2djbPP/88OTk5Zarh+++/58477yzymMfjITc3t0zLDx06lMGDB5dp3vJIS0tj37595V7uoYce4qqrrmLt2rXH9bpnnHEG//3vf9mxYwe5ubncf//9fP/99+VaR79+/XjhhRdYtWrVcdUAsG7dOuLj4/nvf//rO0bKY/Xq1QwaNIg33njjuGsQERGRk4thGMd9jnSye/rpp1m+fHmxz23atOmE/mApcrJQKCVyklmwYAFt27Zl+PDhjBgxgjfeeIPvvvuORx99lK1btx4zUJg3bx4fffRRkccyMzN5/PHHWbRoUZlqaNy4MREREWzbto0XX3wRgAMHDtCkSRP27t17zOU7duxI48aNfcvNnj2b+fPnM378eK644gpq1arFuHHjylRLeno63333HY888ghnn302p512WrmDnSeffBKPx8ODDz5YruUKNGvWjE6dOpGenk5wcDD9+vXj3XffLdOya9euZcOGDURERPDee+/x6KOPcvDgweOq44wzzmDOnDl8/fXXpKenl3v5mTNncssttxwz2BQREamufv75Z/r374/D4TjqOZfLVeofr9xuNy6Xi4MHDzJv3jyeeOIJevXqxcKFC4vM99dffzF+/PjjrnHt2rVce+21rFu37rjXUZWeeOIJHnjgAX+XUWGGDh3KmWeeyR9//FGu5VasWMGjjz5KSkoKAEuXLmXChAklvo/jx4/ntttuO+F6RWo6hVIiJ5mYmBiaN2/OpEmTmD59Oj179sTpdHL++ecTHR19zOUDAgLo1q1bkcf++usvevXqxeWXX17qsitWrOChhx7CZrMRFRXFm2++SbNmzQDYt28fsbGx1KlT55g11KpVi4SEBAAiIyMZPHgwAQEBDB48mC+++AKn08m5555b7LKbNm3ikUce4ZZbbuHSSy+lQ4cOhISE8MwzzzBo0CAuueQSzjnnnGPWUFh4eDjz58/nzTffLNdyhV1xxRWsXLkSgAsvvJDZs2eXabkZM2Zw1llnsXPnTsLDw3nmmWe46qqryMzMPK46zjvvPLZv306tWrUAyMnJYcWKFfzxxx+lXnK5du1a9u/fz/vvv4/NZjuu1xYREfG3jh07snDhQgICAgDYsGED33//PZMmTeKiiy6iYcOGbNiwodhlDx48SL169fjss8/o1KkTzz77LMHBwbz//vtF5vvxxx954YUX2L17d7Hryc7O5tdff+WFF16gT58+9O3bt0gP5tatW7N48eIiocjPP/+MxWLx/cTExHD55Zfz77//Fln3hg0b6N27NyEhIbRo0aLE842bb76Zp59++pj761i++uorPv74Y2bOnOl7bMGCBXTt2pXg4GBatmzJBx98UGSZRYsWFdmWgh+3213m133qqaeOWv78888HzD+m9urVi2bNmpGUlORb5q233irTut988026detW5nO1Au3atSMvL48RI0aQm5vLyy+/zLJly7jllluKnf+1117j33//PaHzS5GTgd3fBYhIxUpNTaVhw4YA5ObmsmbNGn788UeSkpL47LPPqF27NnfeeSeBgYHFLp+Wlkbbtm2LPDZr1izGjh3LgQMH8Hq9JQZLHTp08P210O12c/vttxMXFweYJyh33303Vuuxs3CbzYbFYmHlypW0b9+e+Ph4Lr30UgzDYPHixVx//fX07t272GWbN2/ODTfcQEJCAp9//jmTJk2iR48eAPzwww9l7qF0pJSUFFavXs0bb7zBtm3beO6552jZsmWZl+/WrRuPPfYYCxcuZNOmTXz11VfUr1+/1GUMw+CHH37gySef9L2nnTp14pJLLuHyyy/n66+/JiIi4pivbRgGO3fuZNOmTWzevJlNmzaxceNGdu/ezaFDhwgPDycmJoZbb72VgQMHHrW82+3mpZde4uOPP8Zut2MYBsnJyaxatYqlS5eyefNmRo4c6TsZFBERqa7Cw8M5/fTTCQkJAeDQoUM8/fTTzJ8/n4SEBGbMmFHi/+9169blrrvuYsmSJfzyyy88/vjjJCcnFwlddu7cyYwZM1iyZAkNGjQ4ah3Lli3jzTffZM2aNcTExPDaa6/RunVrLBYL2dnZhIaGYrFYaNq0KWefffZRy0+dOpU2bdqwZ88eJk6cSK9evVi/fj0REREcPHiQ3r17065dOxYsWMDChQu58cYbadq0KR06dPCt48UXX2TmzJk89dRTJ7Qvc3Nzue+++5g8eTK1a9cG4Ntvv6Vfv3488sgjTJgwgYULFzJo0CCcTidDhw4FzD9iduzY8aiQyG4v+6+mK1asYNiwYb51Ar5zovnz5+P1eunXrx+TJk3i7bff5u+//y7z0AWBgYG88847RR7btm0bW7dupWXLltSrV6/Y5Ww2GxMmTCA1NZX58+f7gssGDRrw8ssvHzV/SEgI06dP54ILLuD666/3nTOLnGoUSomcZLZu3UrTpk3573//S2pqKo0aNWLy5Mk0bdqUiIgI7rvvPjweT4ndrIOCgggMDGTWrFlcf/31HDhwgLy8PLp06UJaWho9e/akd+/evPzyy0WCrT179vgu7xs3bhwHDhxgx44dXH/99Vx22WV8/fXXfPvttyQmJvLhhx9Sr1497r//ft/yhmGwevVqfvjhBz744AMiIiK49dZbad++PS6XixEjRuBwOKhduzYDBgwodR8U9IT67bffuPfeewFYtWoV4eHhnHXWWWXaj5s3b2bhwoWsXLmS3377jczMTDp37sw555xDv379aNGiRYnLZmRksGbNGsA8aVq2bBnZ2dls2bKFp59+mt69e/v+Qluat99+m8jISB599NEij48ePZovv/yS3r1788UXXxAfH3/UsmPHjuX3338nIyODiIgImjVrRuPGjRkzZgxz5szhqaee8p2QFycrK4u//vqL8PBwZsyYgc1m48UXX8Tj8eDxeIiPj6dVq1Zcd911vPTSS/Tu3ZvNmzfTqFGjY26XiIiIP4WFhTFv3jyaN29OgwYNiIuLIy4ujuTk5GP+geX222/n1VdfpV+/fsyePZsbbrjBFya43W7uu+8+5syZwxlnnFHs8p07d6Zz58707t2b+++/n9zcXN8f7K6++mouv/xyhg8fTkRERLE93Fu1akWnTp0AOP/886lduzazZ89myJAhvPrqq7hcLmbPnk1oaCi9evXip59+Yvz48Xz66acAPPbYY0yePJkmTZoc7+7zmTt3Li1atODCCy/0PVbQo/v5558HoGvXrmzcuJHx48f7AqSVK1fSuXNnOnbseNyvvXLlSgYNGlTsOrZu3cr5559Pz549fWHQ9OnTeeaZZ0pdZ1ZW1lF/wEtOTmbfvn1YLBaioqKIj49nypQphIWFFVnW4/Fw9913s23bNgICAlizZg3PPfccF154YYnHAphDK1x11VVMmTKFhx9++Dj2hEjNp1BK5CSzcuVKbrvtNrZv384tt9zCOeecw8KFCzl48CB9+vThqaeeYtCgQcUum5GRQWxsLNu3b2fQoEH07NmT++67j5tuuok//viDjRs30rVrVz744AOioqJ47rnnfMvWrVuXBg0asGHDBjweD+3bt6dnz5706dOHefPmUbt2bf7zn/8QERFR7KWADoeDH374gSZNmnDllVfSqVMn+vfvj9PppEmTJrzyyits376dyy67jNGjR5dpXyxZssQ39tQDDzyAxWKhf//+TJgwgdNPP73UZZs0acIFF1zAxRdfzCWXXMLDDz9c5m7cAQEBXHnllYwaNYqrr76a4cOHY7FYePDBB8nOziYgIIAvv/ySTp06lfjXtlWrVvHuu+/yww8/HNW7zGazMWPGDM455xzatWvHuHHjGDRoUJGga/To0aSkpFC7dm0sFguAb6DNjh07EhwcjMvlKjEcCw4O5rbbbmPIkCHcdNNNtGrVynfJ35H+7//+j19++aXYcExERKQ6yMjI4Msvv+STTz5h7dq1LF++nB49erB27Vpfz6jTTz+d5557jt9//52oqCgmT5581HpOO+002rRpwzPPPMPcuXOJioryPffVV18xceJEdu7cyZVXXsmHH35IeHj4Uet46623GDx4MP369WPkyJF88sknTJgwoUjPKLvdfszL5WNiYqhduzabN28G4PPPP6dv376Ehob65unUqRM//vijbzopKYklS5Zwxx13lHHPlWzu3LncdNNNvmnDMFixYsVR55mtWrXyhWJg/sHukUceOe7X3bNnD3v27Ckx1PJ6vVitVqxWK16vlwMHDhASEnJUkPTPP//w4osvsmvXLgICAqhduzYtWrTgr7/+IioqigkTJhTb2604NpuNt99+GzB75o8bN47Y2Fh+/vln4uPjj3rtwgYOHMjIkSMVSskpS2NKiZxkli1bRqdOnejTpw9r1qzh008/JTc3l8suu4y1a9fSt29fYmJifPNv2rSJjz/+mKeffpqrr76aXbt28emnn3L++efz22+/MXv2bCZMmMC3335LgwYNeO2111i7du1RJwJWqxWXy0VeXh4PPPAA/fr183VpX7lyJXPmzKFTp060aNGCIUOGHBXGREVF8dBDD3H99dcTFRXF1q1b2bBhA8nJybRo0QKHw0FSUhKHDh3irbfe4rrrruO8884rcpJT2I8//ojFYuHbb78FYMyYMcyYMYMvv/ySLVu2HHM/2mw2WrZs6evyXp671QUHB9O+fXu6detGixYtfKHQwIEDffX+9NNPRXqKFZaUlMSTTz7Jt99+S2xsLGBeDjB//nyGDRtGu3btfPu0W7duTJ06lcGDB5OWluZbh8VioU6dOr7XBvjwww/p06cPU6ZM4aabbqJu3bpHdU8vvP2XXHIJ5513Hl26dMFqteJ2u/nzzz+56aab6Nq1K3/99RdgjvvVrFmzMl2aKSIi4g8ul4uYmBjGjh1Lly5dePbZZ4mOjmbevHm+3uOXXnopn376KaNGjWLChAlHrSM1NZXly5cTHh6O1Wpl1KhRDB48mIsvvpjly5dz5ZVX0rhxYz777DMMwzhqqIS8vDzuv/9+Hn/8cb766itGjBhBXFwc8+fPB8xzoYIQyzCMY/6/mpeXR2pqKvXr18flcrFhwwZatWpVZJ7hw4fz+uuv+6bnzp17zD/MldXff/9N165dfdMWiwWr1XrUDVkSExN9f7jKyMhg48aNvPXWW0RFRREdHc3NN99cphvhFFi5ciU2m42bbrqJ0NBQGjVqxBNPPIHL5QKgfv36/Pvvv/z777/Ur1+f9957r9gBxc866yzeeustvvrqK77//ntmzpzJ008/jcVi8fWiK8/d8aZMmULv3r19d6D++++/OeOMM4iMjCx1ua5du5KYmFjm1xE52ainlMhJZOXKlZx22mnExMTQvXt35s+fz913381vv/3GU089xYoVK4r0bgJzbIU///yTbt26ER4eTuvWrTlw4ACXXnopAwYMYMeOHUf9lSg0NPSoXjE///wzW7du5fnnn/eFHpdffjnZ2dmsXr0aq9VKXl4erVu3LnUb/vnnH2bNmsUVV1xBy5YtmTdvHgcOHODxxx9n586d9O/fn169ejFw4EBq1apV5C+Uhb300ku89NJLpKWl8cADD/DKK6/wySefcN5553HppZeWa78GBgZitVqZMWMGiYmJXHzxxVx88cWlLlMwrsH333/PsGHDuOGGG3jhhRfYunUr+/fvZ+HChcyZM+eo5ZKSkvjqq6+YPXs2I0aMYMOGDWzdupX27dtz77338tRTTzFw4EDuvfdedu/efczB5wvs2bOHWbNmkZiY6AslO3ToUOIgrAAtWrRg//79gHmi3qBBAwYPHsyDDz7IueeeS2pqqm/eY51wiYiI+FNMTIzv//+srCymTp3KhRdeyPDhw8nMzGTy5Ml8/fXX/PHHH8yfP7/I/2u7du3i3nvvpX79+nTu3JmzzjrL90eunTt3FjmvWLFiBRs2bGDOnDlHhVJpaWmsW7eO9957j3nz5hEQEMDo0aO5/fbbAbOHT15eHmCGUiX1lDIMgz179vDMM88QEBBAv379SEtLw+12F/nDI5hjbTZv3tw3XZF/QNqzZ89R42P27NmT1157jauuuoozzjiD+fPnM3v2bN9wCsuXL8cwDNq1a8dzzz3Hnj17GD16NNdddx2//vprmV532bJlBAYGMmDAAJ577jmWLVvGk08+CcCzzz7LFVdcwZNPPsm8efOYP3++b7yw4hw5Nue+fftYtmwZvXv35oknnmDmzJmcdtppfPLJJyX2bi9w2223cdttt9G7d28+/PBDAgMD+eeff5g9ezbt2rWjXbt2xS4XEBBAREQEBw4c0LhSckpSKCVyEvnwww99JzZhYWE0btyYlStXMmXKFD7//HO2b99Oly5diixTr149Xn31VQBeffVVLBYL8+bN4/nnn8dut/sCqR07dvDnn3/y7bff0rFjR4YOHVpkQMqOHTtywQUX4HK5eOyxx2jXrh1Dhgxh9erVLFy4kKCgINavX8/dd999VN3Z2dksWLCATz75BLfbTdeuXX1/eVu1ahWjRo2iS5cuDB8+nJEjR9K4ceNS98Pvv/+O0+nkiiuu8K3/rrvu4vfff+fFF18s077cvXs3r732GklJSaxatYr09HR+/PFHzj777BJPbArLzMzkgw8+4MILL2TQoEFs3boVgLvvvpvLLruM0047rdiBVFu3bu0L7gruxnLBBRfQsmVL34DtderU4cYbbyxxsPri3HPPPTz88MO+k1Wv18uWLVu4+eabS1wmLi7Od1vjO+64g127dtG3b18AWrZsSZ8+fQBzoNPClwqIiIhUVx9++CG7du3isssuo169enzyySckJiYyYMAALrjgAvr27XvUAOPx8fG+3k8DBw5k3759LFmyhOzsbB5//HH++OMPOnToQFpaGu+88w6zZs0iKSmJ9u3bF1lP3bp1+e677wBz7ModO3awcOFC3//7hw4d8vWQ9nq9RXo7FzjvvPN87YL6GzduzI4dOwCq9A65BZfHFfbqq69y4YUXcuaZZxIZGcmhQ4ewWq3897//Bcw/iK1cubLInZAbNmzIRRddxD///FOmsT+HDRvGzTff7Bvf88ILLyQ7O5t33nmHMWPGULduXf7991+ys7P58ccfufLKK7nmmmtYsmQJH3/8Mb169Spx3ePHj+eOO+5gxIgRgDkG2M0331zqOJwFdzHev38/mzZtYtWqVdx2221ERUVRp04d4uLiCAsLKzGUAnNMKt3dWE5VCqVEThIHDhxg8eLFjB8/HgCn0+m7Nv3NN9/E4XBQp04dsrKyih3fAOD+++/njjvuYPv27bRq1YqMjAwaN27MNddcwznnnEPLli3xer3ce++9dO/enTZt2gDm2Ahr1qzBZrOxZ88eevfu7Rsk22az8eSTT3L99dezf//+Yu/cl5OTw7hx4xgyZAh3330348eP910uV9A1/K233mLFihW88847LFmyhEOHDvH+++8XuZsMmAHJ/fffX+TWxMOGDaNHjx643e5j9nAq0KBBAx566CFyc3MBuOqqq5g+fXqZlgX4999/mT17NpGRkUXu1NenTx9uvfVWZs2aVab1JCcns27dOl/XfoC9e/f6Bjkti9dffx2n0+n7KyWYwV1cXFypA7ZHR0ezadMmAC655BLuvfde3n//fX777bciJ8rp6eklHlMiIiLVwS+//MJzzz1H9+7dadKkia/XS8Hl6e3bt+f5559n5MiRBAcHF7uOgkvjO3ToQGBgID/++COXXXaZ71xk5cqV/O9//yMtLY3OnTvz5ZdfctlllxVZx7p165g2bRpff/01TqcTq9VKXFwcDRo0oH79+r4/fHk8Ht/laIXNmDGDs846i+joaE477TTf/8cF/w9nZmYWmf/dd99l/vz5fPnllyew94pXv359du/eXeSPbK1atWLz5s18++237Ny5k+HDh3PzzTf7LhmMjIwsEkiBeYdigNWrV5cplCpunKdu3brx3HPPsWvXLho1akRYWBhhYWEsWrSIm2++mfXr1zNq1CjGjRtXYii1cuVKvvjiC9/NagA2btzIFVdcUWLPfIAzzzyTPXv20K5dO3bs2MFbb73FjTfeeMztKJCbm0tOTk6xA9uLnAoUSomcJB5//HFee+017HY7LpeL2267jQ8//BAw76gXFhaG0+mkdevWDB482HfNfGEZGRmsX7+e1NRUfvrpJ3r37s0FF1zAiBEjfHcOWbZsGXfeeacvkAJzrKQLL7yQ008/nSeeeIL+/fvzww8/cN999wHmYJ1hYWG+S/iO7OETGxvLihUrfNMulwuv10taWhq1a9cmPj6ehx56iB9//JHY2FgOHTpUpBdPYffccw9PPfWUL2zJzc3lwQcfJDo6mpYtW3LxxRczY8aMMg3KXfDXyr179xIUFHTM+Qv88ccftGnTxtf1f+PGjfTq1QuPx8M999zDHXfcwYQJExgwYIDv/SppwPERI0Ywfvx437rcbjd///03TZs2LVMtn3/+OZ999hnz588v0mV/+vTpXH311aUuGxwc7NvHDRo04KyzzqJVq1b069fPd+tnMHuVHXm5gIiISHVx7bXXsmTJEubOnUvXrl35/vvvfc9df/31tG7dmiFDhvDrr78ec2yfa665hpUrV/LVV19x22238dhjj/meK7gL3fTp02ncuHGxAcvpp5/OzTffTN26dQkLC2PYsGFkZ2dz4MAB7rnnHt85ktvtLnY8oxYtWhTb4yY6OprY2Nijxs1cvXo1//77b6nbdLw6dOjA4sWLj+r5HRwczJVXXsn48eMJCAjg6aef9j2XnJyMw+Eo0hutYAyqgj8EHsuyZcto2LBhkXCquHUsW7aMzp07s337ds455xz69+9f4liaaWlp3HzzzUyfPr3IH9oWLFjA4MGDS60nKCiIK664gtWrV7Nt2zaaNm3KjBkzSEpKYs2aNXg8HubOnXvUpYIFFi9efNQfWUVOJQqlRE4CP/zwA126dPHdxvjll18ucpePgjEKWrRowUcffcQll1xC69atueGGG3zz7Nu3j7vvvpuXXnrJN7ZC79696d69O9u2bcPj8bBhwwa+//57XxfsArVq1fLdmW3EiBHcfPPN/P7772zYsAHDMHj++efp3bs3GzZs4JprruGTTz4p9i4kHo+HNWvWsHHjRjp16sT06dO59957adOmDUFBQb6Q6J9//mHAgAFFxnDweDy88sor/Oc//6FXr16kpqby0Ucf8ccff9C/f3+uv/56DMPg9ttvp1WrVjzyyCPccccdRcKVkng8HrKysli4cCF79+5l9+7dbN26lb1793Laaafx4IMP0rBhQ8Ac5+G5555j3Lhx7NixgzFjxjBv3jweeughXn75ZR588EE6d+7MgAEDGDFiBJMmTeLLL78sNiB6/fXXqV27NoMGDfJ16/7++++pV69emUKg999/n6VLl/L1118TGhrKypUrmTdvHo0bN2b27Nn8888/pS6fl5dHVlaWb7rwSSWYvdjatGnDb7/9Rvfu3Y9Zj4iIiD9MmzaN3Nxc4uLiyMvL843bVKB58+YkJycTGhrKrl27SuxFvH79ejweDw888AB79+6lVq1ajBkzhoiICF/v9D///JPXXnuNn3/+2XducKSC853169fz22+/kZCQwMCBA4uMJ5STk0NOTk65trNPnz589dVXTJgwwTfEwm+//VZpgce1117La6+9Vuyd/HJycnjllVe46667igx78M477/Dzzz/zxx9/+B4r6Il+5BATJRk+fDg9e/YsMiTDjBkzqF27Ns2aNfM9NnPmTF588UXmzp1b6g1rsrKyuPbaa3nmmWd859IA27dvZ+nSpcWOAXqk1NRU7rvvPj755BO2bNmC0+nks88+47vvvjvmsA8ffvgh11133TFfQ+RkpVBKpIYzDIPw8HBuvfVW32P//PMPr776qu8OduvWrfP19Dn//PP57rvviowBlJaWxoIFC3j33Xd9XYcLekJdcMEFvPnmm7Rv35569eoxZswYmjRpUmwtXq+Xzz77jEOHDnHXXXcxYMAAXn/9dQYNGkSjRo1wuVx06dKFtm3b8tRTT3HDDTcU6YFks9n4+uuv+eCDDxgxYgRr167lzDPPBMzxHB5++GFyc3NxOp1Hjffgdrt54IEHfNfjx8TEcM8993DPPff45rFYLLz77rvExMQwceJE3n33Xa677joeeOABGjRowKJFi/jzzz9xOBzs2rWLPXv2AOZf/Dp06MAvv/xCdHQ0tWrVomPHjjgcDlJTU/nzzz9p2LAhhmHw9ttvM3r0aN9fRzt06ECTJk1o06ZNkd5lM2bM4Pzzz+e6665jz549XHnllUV6Mr3++uts377dd3vh6dOn89NPP7Fo0SJGjhx5rMOCWbNm0bhxY4YMGeJ7rH379ixYsIDbbruN559/nkaNGpW6jtNOO63Yyy0LZGdnU79+fVJSUnQbYxERqbbCw8MJDw/nl19+4Z9//ikyPtBff/3FyJEj+e9//0vjxo3p1asX999/P/fcc0+Ry/i8Xi/XXXcdX3zxBevWrePAgQMEBQXx+OOPM2jQINxut2+sxs8///yoYMswDLp06cLq1as588wzGTRoEOPGjTvqUrTExETi4uLYvn07bre7XNv55JNP0rFjR6699lruuusu5s6dS2Jiou9coqINGDCAMWPGMGfOHK699toiz02aNAmn08kTTzxR5PEhQ4bw+uuvc+ONN9KnTx9Wr17N//73P6677jrfudPvv//Ovffey8yZM4+6myDAvffey6233orNZqNZs2Z88cUXfP/997zxxhu+c6k9e/YQHR1NcHCwb4zVzz///Khz2P379zNs2DAee+wxevfujdvt5qWXXqJRo0Z8/PHH3Hrrrb4/vJbE4XBw++2389prr1G/fn3q16/Pueeey6RJk44ZSC1btoxFixb5xhEVOSUZInLScrvdxn/+8x+jadOmhsfjqdTX+vPPP43Ro0cbH330keF2uw3DMIwff/zxqPl27dplPPvss8bDDz9sTJ069ajnPR6P8f777xsbNmwwvF6v7/GNGzdWWu0F0tLSjPHjxxvvv/++sWbNGiMvL69SX2/fvn1Gjx49DMDYs2eP7/ENGzYYq1atKjKv0+k0goODjeuvv963f49Henq6sWDBgjLPn5qaWurzI0eONC666KLjrkdERKSq7N2712jZsqVx3333GW632/j444+NiRMnGvv27fPNs3TpUiM2NtaIjY017r//fuPAgQOGYRhGXl6eMXHiRMMwDOOHH34wAGPlypW+5datW2ecc845xl9//VXi669du9ZYsmRJqTWuX7/eiI2NNQBjy5YtvscXLVpkAMbSpUtLXX7ZsmVG165djcDAQKNly5bGF198Uex8PXv2NJ566qlS11UWv/32m1G/fv0i52mpqalGrVq1jAkTJhS7zE8//WScc845RlBQkNG8eXNjzJgxRc655s6da9SpU8f4/fffS3zd119/3TjttNOM4OBgo2PHjsbHH39c5Pk333zT2LFjh2EY5vnw1VdfbdStW9f46aeffPNs27bN+N///mekpaUVWTY9Pd2IiYkx4uPjjf3795e6/du2bTOGDx9u/PPPP8aePXuMzZs3G8uXLzcWLFhgNG3a1HjggQeMa6+91ujQoYPRpk0b4+233/Ytm5KSYrRo0cL49NNPS30NkZOdxTBK6csoIjWew+Fg06ZNR90BRqoHwzBYtGgRHTt2LHL76eJs27btmHcerGppaWkEBARooHMREakR1qxZ4xskvCTp6els2bKFhISEEnvJzJo1i+uvvx4wez8vWrSIF154gbp1655wjZ9++imPPPIIW7ZsKfYOfNXN5MmT+eijj/j555/9XUqF+eWXX2jRogX169cvcR6Xy8Vff/1F165dWbJkCW+++SZ169alSZMmxMfHU79+ferUqUNkZCQulwun04nFYvH1nrr11lupX78+48aNq6rNEqmWFEqJiIiIiIgchwULFlC/fv2j7ih3IgzDIDk5ucw3NakOUlNTddOTcjp06BBRUVE1IngUqUwKpUREREREREREpMpZjz2LiIiIiIiIiIhIxVIoJSIiIiIiIiIiVU6hlIiIiIiIiIiIVDmFUiIiIiIiIiIiUuXs/i6gKni9Xnbv3k1ERITubiAiIiLlZhgGGRkZNGjQAKv15P+bns6dRERE5ESU9dzplAildu/eTaNGjfxdhoiIiNRwO3bsoGHDhv4uo9Lp3ElEREQqwrHOnU6JUCoiIgIwd0ZkZKSfqxEREZGaxuFw0KhRI985xclO504iIiJyIsp67nRKhFIF3c4jIyN1YiUiIiLH7VS5lE3nTiIiIlIRjnXudPIPiiAiIiIiIiIiItWOQikREREREREREalyCqVERERERERERKTKKZQSEREREREREZEqp1BKRERERERERESqnEIpERERERERERGpcgqlRERERERERESkyimUEhERERERERGRKqdQSkREREREREREqpxCKRERERERERERqXIKpUREREREREREpMoplBIRERERERERkSqnUEpERERERERERKqcQikREREREREREalyCqVERESqK8PwdwUiIiIiIpVGoZSIiEh1s24d3HQTtGsH6en+rkZEREREpFLY/V2AiIiIFPL44/D882Y7Jgbs+q9aRERERE5O6iklIiJSXRjG4UAK4IknICzMf/WIiIiIiFQihVIiIiLVgWHAxRcfnm7YEIYN8189IiIiIiKVTNcEiIiI+JvXC716wS+/mNMpKRAX59+aREREREQqmUIpERERf/J6oVs3+OMPc/rAAYiN9W9NIiIiIiJVQKGUiIiIv3i90KkTrFxpTh88aA5uLiIiIiJyClAoJSIi4g8eD7RrB4mJ5nRaGtSq5c+KRERERESqlEIpERGRqubxQJs2sGGDOX3oEERF+bUkEREREZGqplBKRESkKrnd0LIlbNliTqenQ2Skf2sSEREREfEDhVIiIiJVxeWCpk1h505z2uGAiAj/1iQiIiIi4icKpURERKqCywUNG8L+/eZ0ZiaEhfm3JhERERERP1IoJSIiUtny8qBuXXPsKICsLAgN9WtJIiIiIiL+plBKRESkMjmdEBtrBlEA2dkQEuLfmkREREREqgGFUiIiIpUlN9ccxNzlMqdzciA42L81iYiIiIhUE1Z/FyAiInJSyskxe0S5XBAQoEBKREREROQICqVEREQqWnb24TGjwsIgI0OBlIiIiIjIERRKiYiIVKSsrMN31YuOhtRUCAryb00iIiIiItWQQikREZGKkpkJ4eFmu25d2LcPAgP9W5OIiIiISDWlUEpERKQiZGRARITZbtQIdu40x5ISEREREZFiKZQSERE5UQ6HeZc9gKZNYcsWsOsGtyIiIiIipanWodSll17KtGnTAFi8eDFnnHEGcXFxTJw40b+FiYiIFEhPh6gos92qFfz7rwIpEREREZEyqLah1MyZM/nuu+8ASElJoX///gwcOJClS5cyc+ZMFi1a5OcKRUTklHfoENSqZbbbtoXERLDZ/FmRiIiIiEiNUS1DqdTUVEaOHEnLli0BM6Bq0KABTzzxBC1atODJJ59kypQpfq5SREROaamp5t31ADp2hFWrFEiJiIiIiJRDtby+YOTIkVx11VXk5OQAsGbNGnr16oXFYgGgc+fOPPLIIyUu73Q6cTqdvmmHw1G5BYuIyKnl4EGIizPb550Hv/0G1mr5dx4RERERkWqr2p1BL1q0iB9//JHx48f7HnM4HCQkJPimIyMj2b17d4nrGDduHFFRUb6fRo0aVWrNIiJyCklJORxI9ewJS5YokBIREREROQ7V6iw6NzeXYcOG8dZbbxFRcFttwG63ExQU5JsODg4mOzu7xPWMHj2a9PR038+OHTsqtW4RETlF7NsHdeqY7YsvhkWLIL8Xr4iIiIiIlE+1unzv2WefpVOnTvTt27fI4zExMaSkpPimMzIyCAwMLHE9QUFBRUIsERGRE7Z3L9Svb7b79oUvv1QgJSIiIiJyAqpVKPXRRx+RkpJCrfw7GWVnZzNr1iwAunbt6ptv1apVxMfH+6NEERE5Fe3eDQX/71x5JXz2mQIpEREREZETVK1CqV9//RW32+2bfvDBB+nSpQu33norjRo1YuHChfTs2ZPx48fTp08fP1YqIiKnjF27oGFDs3399fDJJwqkREREREQqQLUKpRoWnPTnCw8PJy4ujri4OF555RUuv/xywsPDqVWrFtOmTfNPkSIicurYsQNOO81s/+c/8MEHCqRERERERCqIxTAMw99FlFVycjLr16+ne/fuhIeHl3k5h8NBVFQU6enpREZGVmKFIiJy0ti2DZo0Mdu33gpTp/qzGvGzU+1c4lTbXhEREalYZT2XqFY9pY4lISGBhIQEf5chIiInu+RkaNrUbN9xB7zzjn/rERERERE5CVn9XYCIiEi1snnz4UDqnnsUSEmVSUxMpFOnTkRHRzNq1CjK0pl98eLFnHHGGcTFxTFx4sRi5zl06BD169dn69atFVyxiIiIyIlRKCUiIlJg40Zo3txs338/vP66X8uRU4fT6aRfv3506NCB5cuXk5SUdMzxM1NSUujfvz8DBw5k6dKlzJw5k0WLFh0136hRo9i7d28lVS4iIiJy/BRKiYiIAGzYAKefbrYfegheecW/9cgp5ZtvviE9PZ2JEyfSrFkzxo4dy5QpU0pdZubMmTRo0IAnnniCFi1a8OSTTx61zC+//ML8+fOJjY2tzPJFREREjotCKRERkaQkaNXKbD/2GLz4on/rkVPOmjVr6NKlC6GhoQC0bduWpKSkYy7Tq1cvLPl3hOzcuTMrVqzwPe90Ohk2bBiTJk0q1w1iRERERKqKQikRETm1JSZCmzZme8wYeO45/9YjpySHw1HkZi4WiwWbzUZaWlqZl4mMjGT37t2+6bFjx3L66adzww03HPP1nU4nDoejyI+IiIhIZVMoJSIip66//4azzjLbzz8PTz7p33rklGW32wkKCiryWHBwMNnZ2WVepvD869at4+233+att94q0+uPGzeOqKgo30+jRo2OYytEREREykehlIiInJpWrYKzzzbb48fDo4/6tx45pcXExJCSklLksYyMDAIDA8u8TMH8hmFwxx138Nxzz9GgQYMyvf7o0aNJT0/3/ezYseP4NkRERESkHBRKiYjIqWf5cmjf3my/8gqMGuXfeuSU16lTJ5YuXeqbTk5Oxul0EhMTU+ZlVq1aRXx8PNu3b+e3335j1KhR1KpVi1q1arF9+3batm3LRx99VOy6goKCiIyMLPIjIiIiUtkUSomIyKll2TLo1Mls/+9/cP/9fi1HBKBHjx44HA6mTp0KmONBXXTRRdhsNjweT7HL9O/fnyVLlrBw4UJcLhfjx4+nT58+xMfHk5yczOrVq30/DRo0YMGCBfTv378qN0tERESkVHZ/FyAiIlJlli6Frl3N9ttvw7Bh/q1HJJ/dbue9995j4MCBjBo1CqvVys8//4zT6aR58+bMnj2bLl26FFkmLi6OV155hcsvv5zw8HBq1arFtGnTsNvtNGnS5Kj1N2zYUHfhExERkWrFYhiG4e8iKpvD4SAqKor09HR1RxcROVX9+iv06GG233sPbrvNv/VIjVJV5xJ79+5lxYoVdOnShdjY2DItk5yczPr16+nevXuFhU46dxIREZETUdZzCfWUEhGRk9/PP0OvXmZ72jQYNMif1YiUqF69evTt27dcyyQkJJCQkFBJFYmIiIhUHoVSIiJycvvxR7joIrM9cybcdJN/6xEREREREUChlIiInMy+/x769DHbn34K11/v33pERERERMRHd98TEZGT04IFhwOpOXMUSImIiIiIVDMKpURE5OQzfz4UjMvzxRdwzTV+LUdERERERI6mUEpERE4un30GAwaY7S+/PNwWEREREZFqRWNKiYjIyWP27MOX6X3zDVx6qX/rERERERGREqmnlIiInBw+/vhwIPXDDwqkRERERESqOYVSIiJS833wAdx0k9n+6Se46CL/1iMiIiIiIsekUEpERGq2qVPh//7PbC9eDL16+bceEREREREpE4VSIiJSc02eDEOGmO3ffoMePfxbj4iIiIiIlJlCKRERqZnefBOGDTPbf/wB3br5tx4RERERESkXhVIiIlLzTJoEd99ttv/6C84917/1iIiIiIhIuSmUEhGRmuXll+G++8z2ihXQsaN/6xERERERkeOiUEpERGqOF16ABx8026tXQ/v2fi1HRERERESOn0IpERGpGZ59FkaPNtt//w1nn+3fekRERERE5ITY/V2AiIjIMT35pBlKAaxdC61b+7ceERERERE5YQqlRESkehs92rxsD2D9emjZ0r/1iIiIiIhIhVAoJSIi1deDD5oDmwP8+y+0aOHfekREREREpMIolBIRkepp+HB4/XWzvWkTNGvm33pERERERKRCKZQSEZHq57//hbffNttbtkBCgn/rERERERGRCqdQSkREqpehQ2HKFLOdnAxNmvi1HBERERERqRwKpUREpHowDLj1Vpgxw5zetg1OO82vJYmIiIiISOVRKCUiIv5nGHDTTfDJJ+b0jh3QsKF/axIRERERkUqlUEpERPzLMODaa+Gzz8zpXbugQQP/1iQiIiIiIpVOoZSIiPiPYUD//vDVV+b07t1Qv75/axIRERERkSqhUEpERPzDMOCyy+C778zpvXuhbl3/1iQiIiIiIlVGoZSIiFQ9w4ALL4RFi8zp/fuhdm3/1iQiIiIiIlVKoZSIiFQtrxd69IAlS8zplBSIi/NvTSIiIiIiUuUUSomISNXxeqFLF/jrL3P64EGIifFvTSIiIiIi4hcKpUREpGp4vdChA6xebU6npkJ0tF9LEhERERER/1EoJSIilc/jgbPPhrVrzem0NKhVy68liYiIiIiIfymUEhGRyuV2Q+vWsHGjOZ2eDpGR/q1JRERERET8TqGUiIhUHrcbmjeHbdvMaYcDIiL8W5OIiIiIiFQLCqVERKRyuFzQuDHs2WNOZ2RAeLh/axIRERERkWpDoZSIiFS8vDyIj4cDB8zpzEwIC/NvTSIiIiIiUq0olBIRkYqVlwe1a5uX6gFkZUFoqH9rEhERERGRakehlIiIVByn07yrXm6uOZ2dDSEhfi1JRERERESqJ4VSIiJSMXJzzUv0vF6wWs0eUsHB/q5KRERERESqKau/CxARkZNATo7ZI8rrNYOo7GwFUiIiIiIiUiqFUiIicmKysw+PGRUZCenpEBTk35pERERERKTaUyglIiLHLyvr8F314uLMu+0FBvq3JhERERERqREUSomIyPHJzITwcLNdvz7s3g0BAf6tSUREREREagyFUiIiUn4ZGRARYbYbN4bt2xVIiYiIiIhIuSiUEhGR8klPN8eOAmjRAjZtArtu5ioi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B4VSIiI13RdfQL9+ZnvePLjqKr+WIyLlZ7fbee+997jnnnuIi4tj3rx5vPjiizidTpo0acIff/xx1DJxcXG88sorXH755dStW5cNGzbw+OOPAzB58mSysrIYNGgQERERREREFBkUXURERKQ6sBiGYfi7iMrmcDiIiooiPT1d3dFF5OQydy5ce63Z/vpruPxy/9YjcpKqqnOJvXv3smLFCrp06UJsbGyZlklOTmb9+vV0796d8PDwCqlD504iIiJyIsp6LmGvwppERKQizZoFN9xgtr/7Di65xL/1iMgJq1evHn379i3XMgkJCSQkJFRSRSIiIiKVR5fviYjURDNnHg6kFi5UICUiIiIiIjWOQikRkZpm+nS4+WazvWgRXHihf+sRERERERE5DgqlRERqkvfeg1tvNdu//goXXODPakRERERERI6bQikRkZri7bfh9tvN9u+/w/nn+7ceERERERGRE6BQSkSkJvjf/+C//zXbf/4J553n33pEREREREROkEIpEZHq7pVX4N57zfZff0Hnzv6tR0REREREpAIolBIRqc5eeglGjDDbK1dCx47+rUdERERERKSCKJQSEamuxo6Fhx4y22vWwDnn+LceERERERGRCqRQSkSkOnrmGXjsMbOdmAht2/q3HhERERERkQpm93cBIiJyhMcfh+efN9tJSXDGGf6tR0REREREpBIolBIRqU4efhjGjzfb69dDy5b+rUdERERERKSSKJQSEakuHngAXn3VbP/7L7Ro4ddyREREREREKpNCKRGR6uCee+CNN8z25s3QtKl/6xEREREREalkCqVERPxt2DCYPNlsb9kCCQn+rUdERERERKQKKJQSEfGnwYNh2jSzvXUrNG7sz2pERERERESqjEIpERF/MAy45RaYOdOc3r4dGjXyb00iIiIiIiJVSKGUiEhVMwy44QaYPduc3rkT4uP9W5OIiIiIiEgVUyglIlKVDAOuvhq++MKc3r0b6tf3a0kiIiIiIiL+oFBKRKSqGAZccQUsWGBO79kD9er5tyYRERERERE/USglIlIVDAMuuQQWLjSn9+2DOnX8W5OIiIiIiIgfKZQSEalsXi/06gW//GJO798PtWv7tyYRERERERE/UyglIlKZvF44/3xYutScPnAAYmP9W5OIiIiIiEg1oFBKRKSyeL1w7rmwfLk5ffAgxMT4tyYREREREZFqQqGUiEhl8HigfXv4+29zOi0NatXya0kiIiIiIiLViUIpEZGK5vHAmWfC+vXm9KFDEBXl15JERERERESqG4VSIiIVye2Gli1hyxZzOj0dIiP9W5OIiIiIiEg1pFBKRKSiuN3QtCns2GFOOxwQEeHfmkRERERERKophVIiIhXB5YJGjWDfPnM6MxPCwvxbk4iIiIiISDWmUEpE5ETl5UG9euZg5gBZWRAa6t+aREREREREqjmFUiIiJ8LphNhYM4gCBVIiIiIiIiJlpFBKROR45eaag5i7XOZ0djaEhPi3JhERERERkRpCoZSIyPHIzT0cQAUEmIOaBwf7tyYREREREZEaxOrvAkREapycnMOBVFgYZGQokBIRERERESknhVIiIuWRnX14zKhatSA1FYKC/FqSiIiIiIhITaRQSkSkrDIzzZ5RAHXqwP79EBjo35pERERERERqKIVSIiJlkZEBERFmu2FD2LnTHEtKREREREREjotCKRGRY3E4zLvsATRtCsnJCqREREREREROUJlCKa/Xy5QpU7jnnnt47bXXOHjwYJHnc3Nz6d27d6UUKCLiV+npEBVltlu2hH//BbtuXCoiIiIiInKiyhRK3XnnnTz66KNkZmbyySefkJCQwMSJE33PezweFi9eXGlFioj4xaFD5mDmAGeeCWvXgs3mz4pEREREREROGmX6c/9HH33E77//Ttu2bQFYtGgRd9xxB9988w0ff/wxIQW3RhcROVmkpkJsrNnu0AGWLQOrrngWERERERGpKGX6DctmsxFU6JbnvXr1Ys2aNTRs2JBzzjmHP//8s9IKFBGpcgcPHg6kzjtPgZSIiIiIiEglKNNvWTfddBODBw9m69atvsdCQ0OZOnUqo0ePpm/fvhVW0Lx582jatCl2u5127dqxbt06ABITE+nUqRPR0dGMGjUKwzAq7DVFRHxSUiAuzmz37AlLliiQEhERERERqQRl+k3rjTfeoG/fvrz++utHPXfXXXexYMECBgwYcMLFbN68mcGDB/PCCy+wa9cuTj/9dIYOHYrT6aRfv3506NCB5cuXk5SUxLRp00749UREiti/H+rUMdsXXQSLFoHF4t+aRERERERETlIWoxp1Ofrqq6/YvXs3d9xxB2COXdW3b18++ugjhgwZws6dOwkNDWXNmjXcfffd/Pbbb2Var8PhICoqivT0dCILbusuIlLY3r1Qv77Zvuwy+PprBVIi4nOqnUucatsrIiIiFaus5xLV6r7mV1xxRZHpDRs20KJFC9asWUOXLl0IDQ0FoG3btiQlJZW4HqfTidPp9E07HI7KKVhETg67d0N8vNkeMAA+/1yBlIiIiIiISCWrtgOl5OXl8fLLL3PnnXficDhISEjwPWexWLDZbKSlpRW77Lhx44iKivL9NGrUqKrKFpGaZteuw4HUddcpkBIREREREaki1TaUeuqppwgLC2Po0KHY7fYid/8DCA4OJjs7u9hlR48eTXp6uu9nx44dVVGyiNQ0O3ZAw4Zm+z//gU8/VSAlIiIiIiJSRarV5XsFfvrpJ9544w3++OMPAgICiImJITExscg8GRkZBAYGFrt8UFDQUSGWiEgR27ZBkyZm+9ZbYepUf1YjIiIiIiJyyql2PaWSk5MZOHAgb7zxBq1btwagU6dOLF26tMg8TqeTmJgYf5UpIjVZcvLhQOr22xVIiYiIiIiI+EG1CqVycnK44oorGDBgAFdddRWZmZlkZmbSvXt3HA4HU/N/cRw7diwXXXQRNpvNzxWLSI2zeTM0bWq2774bJk/2bz0iIiIiIiKnqGp1+d73339PUlISSUlJvPvuu77Hk5OTee+99xg4cCCjRo3CarXy888/+69QEamZNm2CFi3M9v33wyuv+LUcERERERGRU9lx9ZT66KOPuPHGG+nWrRsbN27k+uuv58CBAydczIABAzAM46ifJk2a0L9/fzZv3sz06dNZt26d79I+EZEy2bDhcCD10EMKpERERERERPys3KHUY489xsMPP0xCQgJr1qzBajVXMWzYsAov7kj16tWjb9++xMbGVvprichJZN06aNXKbD/6KLz4on/rERERERERkfJfvvfuu+/y448/ctZZZ/H2228TEBDAxIkTadOmTWXUJyJyYtauhTPPNNtPPQVPP+3XckRERERERMRU7p5StWrVYseOHUUe27VrF3Xr1q2wokREKsTffx8OpJ5/XoGUiIiIiIhINVLunlKPP/44V111FVdffTVOp5NXXnmFefPmMWbMmMqoT0Tk+KxaBe3bm+3x42HUKP/WIyIiIiIiIkWUu6fU//3f//HDDz8QERHBBRdcQFZWFjNmzOCWW26pjPpERMpvxYrDgdTEiQqkREREREREqqFy95QC6NGjBz16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X8sREalq9erVo2/fvuVaJiEhgYSEhGKfa926Na1bt66I0kREREQqXJlDqSZNmmCxmIPBnXXWWb7HLRYLzZs355133qmUAkXkFPHcc/DEE2b777+h0PeMiIiIiIiInHzKHEp5veYtHaxWK2lpaURFabAwEakgTz0FzzxjthMToU0b/9YjIiIiIiIila7MoVSBli1bYreXezERkeKNHg0vvGC2162DVq38W4+IiIiIiIhUiXKnS+vWrauMOkTkVDRqFEyYYLY3bIDTT/dvPSIiIiIiIlJlyh1KZWdn8+abb7JhwwY8Hg9gDna+evVqVq1aVeEFishJ6v774bXXzPamTdCsmV/LERERERERkapV7lDq//7v/zhw4AAulwu73U6XLl146623GDp0aGXUJyIno7vugrfeMtubN0PTpv6tR0RERERERKpcuUOpH374gaSkJNavX88LL7zAiy++yNlnn8306dMroz4ROdkMHQpTppjt5GRo0sSv5YiIiIiIiIh/WMu7QK1atVi/fj1dunRhzZo1eL1eevXqxdKlSyujPhE5WRgGDBp0OJDatk2BlIiIiIiIyCms3D2lHn/8cS677DL27t1Lt27duOSSS/B6vZx55pmVUZ+InAwMA/7zH/j4Y3N6xw5o2NC/NYmIiIiIiIhflbun1O23387q1asJCwtj6tSpdO/enfbt2zNr1qzKqE9EajrDgOuuOxxI7dqlQEpERERERETK31MKoHXr1gAEBQXx1FNPVWhBInISMQwYMAC+/NKc3r0b6tf3b00iIiIiIiJSLZS7p5TL5WLs2LGce+65xMfHs3btWjp37szmzZsroz4RqakMAy677HAgtXevAikRERERERHxKXcodddddzFr1iyGDBlCRkYGoaGhdO3alWHDhlVGfSJSExkGXHghfPedOb1vH9St69+aREREREREpFop9+V7c+bMYfny5TRr1oxHHnkEm83Gww8/zOmnn14Z9YlITeP1Qs+e8Ntv5nRKCsTF+bcmERERERERqXbK3VOqUaNG/PLLL75pi8XC2rVrSUhIqNDCRKQG8nqha9fDgdTBgwqkREREREREpFjl7ik1fvx4rrzySiZPnkx2djYjRozg119/ZcaMGZVRn4jUFF4vdOwIq1aZ06mpEB3t35pERERERESk2ip3KHXppZeSmJjIrFmzOOecc2jYsCEvvvgiTZs2rYz6RKQm8Hjg7LNh7VpzOi0NatXya0kiIiIiIiJSvZUplPrpp5+44IILsFrNq/2aN2/Oo48+WqmFiUgN4fHAGWfAxo3m9KFDEBXl15JERERERESk+ivTmFIXX3wxmZmZvum1a9fidrsrrSgRqSHcbmje/HAg5XAokBIREREREZEyKVMoZRhGkenu3buze/fuSilIRGoIlwsaN4atW83pjAyIiPBrSSIiIiIiIlJzlOnyPYvFUmT6yJBKRE4xeXkQHw8HDpjTmZkQFubfmkRERERERKRGKfNA54WDKYvFclRQJSKniLw8qF3bvFQPICsLQkP9W5OIiIiIiIjUOGUKpQzD4Pzzz8dmswHgcDi47LLLCAwMLDLfypUrK75CEak+nE6IjoacHHM6OxtCQvxbk4iIiIiIiNRIZQqlpk6dWtl1iEh1l5trjhnldoPVavaQCg72d1UiIiIiIiJSQ5UplBo0aFBl1yEi1VlOzuFL9IKCID3d/FdERERERETkOJXp7nsicgrLzj4cSEVEKJASERERERGRCqFQSkRKlpV1+K56sbHm3fYUSImIiIiIiEgFUCglIsXLzITwcLNdvz7s2QNH3NxARERERERE5HgplBKRo2VkmJfqATRuDNu3Q0CAf2sSERERERGRk4pCKREpyuGAyEiz3awZbNoE9jLdE0FERERERESkzBRKichhhw5BVJTZPuMM2LBBgZSIiIiIiIhUCoVSImJKS4PoaLPdrh388w/YbH4tSURERERERE5eCqVEBFJTISbGbHfuDCtWKJASERERERGRSqVQSuRUd+AAxMaa7W7dYOlSsOqrQURERERERCqXfvMUOZWlpEDt2mb7ggvg118VSImIiIiIiEiVqJa/fR44cICEhAS2bt3qeywxMZFOnToRHR3NqFGjMAzDfwWKnAz27YM6dcz2JZfATz+BxeLfmkREREREROSUUe1CqQMHDnDFFVcUCaScTif9+vWjQ4cOLF++nKSkJKZNm+a3GkVqvL17oV49s33FFfDttwqkREREREREpEpVu1Dqxhtv5Kabbiry2DfffEN6ejoTJ06kWbNmjB07lilTpvipQpEabvduqF/fbF99Ncyfr0BKREREREREqly1C6Xeffddhg8fXuSxNWvW0KVLF0JDQwFo27YtSUlJ/ihPpGbbuRPi4832DTfAnDkK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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:51.657230Z",
     "start_time": "2025-04-17T12:58:51.649240Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 左图：原始数据中心化后分布及主成分方向（红色箭头）\n",
    "# 右图：降维后的数据分布（当k=1时为水平直线，k=2时为二维散点图）"
   ],
   "id": "7657e79d9e640dd",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:51.845234Z",
     "start_time": "2025-04-17T12:58:51.836235Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 输出结果说明：\n",
    "# 数据标准化：输出中心化后的数据均值接近[0, 0]\n",
    "# SVD分解：显示奇异值和右奇异矩阵\n",
    "# 主成分选择：展示方差贡献率和自动计算的k值\n",
    "# 降维结果：显示降维后的数据维度及示例数据"
   ],
   "id": "97fa7c4c293448e4",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:51.988006Z",
     "start_time": "2025-04-17T12:58:51.981005Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "4d2827a15af84528",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:52.156984Z",
     "start_time": "2025-04-17T12:58:52.146984Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "c766d97c46bda65e",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:52.310254Z",
     "start_time": "2025-04-17T12:58:52.305252Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "f5f086ebc7f4076c",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:52.484242Z",
     "start_time": "2025-04-17T12:58:52.470248Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "78154c9447df2b8d",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "",
   "id": "71d764f7833aea24"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:52.641954Z",
     "start_time": "2025-04-17T12:58:52.634957Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "6960c3b9af6f48cf",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:58:52.816012Z",
     "start_time": "2025-04-17T12:58:52.804007Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "20de4f98d26d885",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T12:50:23.153278Z",
     "start_time": "2025-04-17T12:50:23.141099Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "81e8b9d57af5fd16",
   "outputs": [],
   "execution_count": 22
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T07:40:54.702439Z",
     "start_time": "2025-04-18T07:40:54.693806Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "84e58725e642f840",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T07:40:54.889135Z",
     "start_time": "2025-04-18T07:40:54.876137Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "69f4ff8229de17b2",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T07:40:55.058795Z",
     "start_time": "2025-04-18T07:40:55.039790Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "ad3a50b1aef2965c",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:19:46.498232Z",
     "start_time": "2025-04-18T08:19:46.482097Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 生成数据\n",
    "X = np.random.randn(100, 5)  # 100样本，5特征\n",
    "print(\"原始数据形状:\", X.shape)  # 输出: (100, 5)\n",
    "print(\"原始数据样例（前5行）:\\n\", X[:5])\n",
    "\n",
    "# 标准化（中心化）\n",
    "scaler = StandardScaler(with_std=False)  # 仅去均值\n",
    "X_centered = scaler.fit_transform(X)\n",
    "print(\"\\n中心化后数据均值:\", np.mean(X_centered, axis=0))  # 输出: 接近0的数组（中心化验证）\n",
    "\n",
    "# SVD分解\n",
    "U, S, Vt = np.linalg.svd(X_centered, full_matrices=False)\n",
    "print(\"\\n奇异值S:\", S)  # 输出: 5个奇异值（降序排列）\n",
    "print(\"右奇异矩阵Vt形状:\", Vt.shape)  # 输出: (5, 5)\n",
    "\n",
    "# 选择前k个主成分（k=2）\n",
    "k = 2\n",
    "V_k = Vt[:k].T  # 右奇异向量转置为列\n",
    "print(\"\\n前k个主成分形状:\", V_k.shape)  # 输出: (5, 2)\n",
    "\n",
    "# 投影数据\n",
    "Z = X_centered @ V_k\n",
    "print(\"\\n降维后数据形状:\", Z.shape)  # 输出: (100, 2)\n",
    "print(\"投影后数据样例（前5行）:\\n\", Z[:5])  # 输出: 前5行降维后的数据\n"
   ],
   "id": "7a69bc9e940be4ca",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据形状: (100, 5)\n",
      "原始数据样例（前5行）:\n",
      " [[-0.28209333 -0.58904147 -0.8807337  -3.11679037  1.17183048]\n",
      " [-0.28882382  1.23604595 -0.41793144 -0.24759761 -1.0959086 ]\n",
      " [-0.67530761 -1.53377548  1.19263154  1.03776252 -1.03702764]\n",
      " [ 1.4831883   1.11355253 -0.6838643   0.07676021 -1.67679351]\n",
      " [ 1.35844307 -0.18443002 -0.32600532 -0.13559443  0.9572458 ]]\n",
      "\n",
      "中心化后数据均值: [-1.52655666e-18  2.55351296e-17  3.33066907e-18  3.77475828e-17\n",
      "  1.38777878e-17]\n",
      "\n",
      "奇异值S: [11.80838081 11.25283854 10.33057469  9.30268111  7.73784117]\n",
      "右奇异矩阵Vt形状: (5, 5)\n",
      "\n",
      "前k个主成分形状: (5, 2)\n",
      "\n",
      "降维后数据形状: (100, 2)\n",
      "投影后数据样例（前5行）:\n",
      " [[-2.68191722 -1.96448127]\n",
      " [-0.27551077  1.15888788]\n",
      " [ 1.72793095  0.02546512]\n",
      " [-0.37896858  1.44355655]\n",
      " [-0.79042959 -0.94059943]]\n"
     ]
    }
   ],
   "execution_count": 34
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:31.546221Z",
     "start_time": "2025-04-18T08:00:31.530221Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "21256d79aa663129",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:31.702244Z",
     "start_time": "2025-04-18T08:00:31.697259Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "11fdf1baf795e018",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:31.844833Z",
     "start_time": "2025-04-18T08:00:31.839833Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "cc7d9dcbc7c94207",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:32.048021Z",
     "start_time": "2025-04-18T08:00:32.034926Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "dc23fbc0cc8e24ee",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:32.269082Z",
     "start_time": "2025-04-18T08:00:32.256085Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "d8c3c8df5cafbf6b",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:35.654015Z",
     "start_time": "2025-04-18T08:00:35.640819Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "fdda02bf1c96882b",
   "outputs": [],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T08:00:32.613065Z",
     "start_time": "2025-04-18T08:00:32.605054Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "a4674707fa535918",
   "outputs": [],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:17:58.623428Z",
     "start_time": "2025-04-18T06:17:58.615428Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "9a20333c31ad8870",
   "outputs": [],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:23:44.808515Z",
     "start_time": "2025-04-18T06:23:44.803512Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "56e0a31cde9aad18",
   "outputs": [],
   "execution_count": 18
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:23:49.532863Z",
     "start_time": "2025-04-18T06:23:49.523861Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "a7e7bc001393e4b3",
   "outputs": [],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:23:50.577534Z",
     "start_time": "2025-04-18T06:23:50.571533Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "c73ede6c6085a616",
   "outputs": [],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:23:52.036308Z",
     "start_time": "2025-04-18T06:23:52.030302Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "c630400ed7a6f0e9",
   "outputs": [],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:23:46.235176Z",
     "start_time": "2025-04-18T06:23:46.219163Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "95efe54d99fc4784",
   "outputs": [],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:47:16.347843Z",
     "start_time": "2025-04-18T06:47:16.330417Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "29bab94db1d917eb",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:47:16.522465Z",
     "start_time": "2025-04-18T06:47:16.505464Z"
    }
   },
   "cell_type": "code",
   "source": "\n",
   "id": "cbd299a3ccc39be0",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:47:16.712769Z",
     "start_time": "2025-04-18T06:47:16.697770Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "ea9ef8b7e545e611",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T06:47:16.884970Z",
     "start_time": "2025-04-18T06:47:16.868968Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "7d6d082b48dfa83",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T09:25:18.309429Z",
     "start_time": "2025-04-18T09:25:18.300110Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "82a2668fcaa208fe",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-18T09:25:18.339266Z",
     "start_time": "2025-04-18T09:25:18.319272Z"
    }
   },
   "cell_type": "code",
   "source": "",
   "id": "dff42c11424a4311",
   "outputs": [],
   "execution_count": null
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "fec1c4069ad45152"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
